﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Aceso.Server.Models
{
    /// <summary>
    /// 用于初始化数据库中的数据
    /// </summary>
    /// <remarks>
    /// Entity Framework本身支持以下几种数据库初始化策略：
    /// MigrateDatabaseToLatestVersion：使用Code First数据库迁移策略，将数据库更新到最新版本
    /// NullDatabaseInitializer：一个什么都不干的数据库初始化器
    /// CreateDatabaseIfNotExists：顾名思义，如果数据库不存在则新建数据库
    /// DropCreateDatabaseAlways：无论数据库是否存在，始终重建数据库
    /// DropCreateDatabaseIfModelChanges：仅当领域模型发生变化时才重建数据库
    /// </remarks>
    public class DataModelInitializer : DropCreateDatabaseIfModelChanges<DefaultModelContext> // CreateDatabaseIfNotExists<DefaultModel>
    {
        protected override void Seed(DefaultModelContext context)
        {
            //var contracts = new List<Contract>
            //{
            //    new Contract{ BillNo = "PO20150201-001", BillDate=new DateTime(2015,  2,  1), TotalPrice=9876543.21M, Supplier = "Microsoft"},
            //    new Contract{ BillNo = "PO20141230-088", BillDate=new DateTime(2014, 12, 30), TotalPrice=1234567.89M, Supplier = "Oracle"},
            //};
            //context.Contracts.AddRange(contracts);
            //context.SaveChanges();//可以分次提交，也可以最后一次性提交给数据库

            //var deliveries = new List<DeliveryNote>
            //{
            //    new DeliveryNote{ BillNo = string.Format("DN{0:yyyyMMdd}-006", DateTime.Today), TotalPrice=445566M, Contract=contracts.First(), Checker="张三"},
            //};
            //context.DeliveryNotes.AddRange(deliveries);
            //context.SaveChanges();//可以分次提交，也可以最后一次性提交给数据库
        }

    }
}
